]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
status/volume: Mute/unmute when clicking icon
authorFlorian Müllner <fmuellner@gnome.org>
Wed, 8 Feb 2023 00:34:47 +0000 (01:34 +0100)
committerMarge Bot <marge-bot@gnome.org>
Fri, 10 Feb 2023 16:27:28 +0000 (16:27 +0000)
This behavior was lost with the move to quick settings. Now that
we allow slider icons to be interactive, we can easily restore
the feature (and even in a less-Easter-eggy way)

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/5974

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2630>

js/ui/status/volume.js

index 79950458d253ab608444e2720c9ea7fd3a9718bd..078805c3e40601739c52b7ffd4ab417fdf4d1f98 100644 (file)
@@ -32,7 +32,9 @@ const StreamSlider = GObject.registerClass({
     },
 }, class StreamSlider extends QuickSlider {
     _init(control) {
-        super._init();
+        super._init({
+            icon_reactive: true,
+        });
 
         this._control = control;
 
@@ -54,6 +56,13 @@ const StreamSlider = GObject.registerClass({
             this._notifyVolumeChange();
         });
 
+        this.connect('icon-clicked', () => {
+            if (!this._stream)
+                return;
+
+            this._stream.change_is_muted(!this._stream.is_muted);
+        });
+
         this._deviceItems = new Map();
 
         this._deviceSection = new PopupMenu.PopupMenuSection();
@@ -204,6 +213,7 @@ const StreamSlider = GObject.registerClass({
         let muted = this._stream.is_muted;
         this._changeSlider(muted
             ? 0 : this._stream.volume / this._control.get_vol_max_norm());
+        this.iconLabel = muted ? _('Unmute') : _('Mute');
         this._updateIcon();
         this.emit('stream-updated');
     }